import os
import sys
from django.db import connection, migrations
from django.apps import apps
from django.db.migrations.recorder import MigrationRecorder

# 添加Django项目路径到系统路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

# 设置Django环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')

# 导入Django设置
import django
django.setup()

print("===== 数据库连接信息 ======")
# 检查数据库连接信息
db_settings = django.conf.settings.DATABASES['default']
print(f"数据库引擎：{db_settings.get('ENGINE')}")
print(f"数据库名：{db_settings.get('NAME')}")
print(f"主机：{db_settings.get('HOST')}")
print(f"端口：{db_settings.get('PORT')}")
print(f"用户：{db_settings.get('USER')}")
print(f"密码是否设置：{'是' if db_settings.get('PASSWORD') else '否'}")

print("\n===== inventory模块迁移状态 ======")
# 查询迁移记录
migrations = MigrationRecorder.Migration.objects.filter(app='inventory').order_by('applied')
if migrations:
    for m in migrations:
        print(f"迁移名称：{m.name}，应用时间：{m.applied}")
else:
    print("没有找到inventory模块的迁移记录")

print("\n===== 数据库中所有表 ======")
# 查询数据库中的所有表
with connection.cursor() as cursor:
    cursor.execute("SHOW TABLES;")
    all_tables = cursor.fetchall()
    
    if all_tables:
        print(f"总共找到 {len(all_tables)} 个表")
        # 按名称排序
        all_tables_sorted = sorted([table[0] for table in all_tables])
        
        print("\n所有表列表：")
        for table in all_tables_sorted:
            print(table)
            
        # 特别检查inventory相关表
        inventory_tables = [table for table in all_tables_sorted if table.startswith('inventory_')]
        print(f"\n以'inventory_'开头的表数量：{len(inventory_tables)}")
        if inventory_tables:
            print("inventory相关表：")
            for table in inventory_tables:
                print(f"  - {table}")
        else:
            print("没有找到任何以'inventory_'开头的表")
            
        # 检查django_migrations表是否存在
        if 'django_migrations' in all_tables_sorted:
            print("\ndjango_migrations表存在")
        else:
            print("\ndjango_migrations表不存在")
    else:
        print("数据库中没有表")

print("\n===== 尝试直接访问inventory模型 ======")
try:
    # 尝试导入Inventory模型
    from inventory.models import Inventory
    # 尝试计数（不会实际查询数据）
    count = Inventory.objects.count()
    print(f"成功访问Inventory模型，当前记录数：{count}")
except Exception as e:
    print(f"访问Inventory模型失败：{e}")

print("\n===== 检查当前使用的.env文件 ======")
env_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '.env')
if os.path.exists(env_path):
    print(f".env文件存在于：{env_path}")
else:
    print(".env文件不存在")